package template.base;

/**
 * 饮料的超类
 * 定义共性方法并实现它
 * 抽取同类型方法(算法) 让子类实现它
 *
 * @author yaojianfeng
 */
public abstract class BaseCaffeineBeverage {
    /**
     * 调制饮料的步骤是固定的
     * 不希望子类覆盖这个方法
     */
    public final void prepareRecipe() {
        boilWater();
        brew();
        pourInCup();
        addCondiments();
    }

    /**
     * 冲泡方法
     */
    public abstract void brew();

    /**
     * 添加配料的方法
     */
    public abstract void addCondiments();

    private void boilWater() {
        System.out.println("把水煮沸==>");
    }

    private void pourInCup() {
        System.out.println("把饮料倒入杯子中!");
    }



}
